SQL 程序中的 GOTO 陳述式

您所在的位置:网站首页 Sql goto SQL 程序中的 GOTO 陳述式

SQL 程序中的 GOTO 陳述式

2024-07-01 14:06| 来源: 网络整理| 查看: 265

GOTO 陳述式是直接明確且基本的控制陳述式流程,會導致控制流程無條件變更。

它使用 SQL 程序中定義的標籤來分支至特定使用者定義的位置。

通常認為使用 GOTO 陳述式是不良的程式設計作法,不建議使用。 大量使用 GOTO 會導致無法讀取的程式碼,尤其是當程序長時。 此外, GOTO 不是必要的,因為有更好的陳述式可用來控制執行路徑。 沒有需要使用 GOTO 的特定狀況; 相反地,它更常用於方便。

以下是包含 GOTO 陳述式的 SQL 程序範例: CREATE PROCEDURE adjust_salary ( IN p_empno CHAR(6), IN p_rating INTEGER, OUT p_adjusted_salary DECIMAL (8,2) ) LANGUAGE SQL BEGIN DECLARE new_salary DECIMAL (9,2); DECLARE service DATE; -- start date SELECT salary, hiredate INTO v_new_salary, v_service FROM employee WHERE empno = p_empno; IF service > (CURRENT DATE - 1 year) THEN GOTO exit; END IF; IF p_rating = 1 THEN SET new_salary = new_salary + (new_salary * .10); END IF; UPDATE employee SET salary = new_salary WHERE empno = p_empno; exit: SET p_adjusted_salary = v_new_salary; END

此範例示範 GOTO 陳述式的良好用法: 幾乎跳到程序或迴圈的結尾,以便不執行某些邏輯,但確保仍會執行某些其他邏輯。

使用 GOTO 陳述式時,您應該知道一些其他範圍考量: 如果 GOTO 陳述式定義在 FOR 陳述式中,則標籤必須定義在相同的 FOR 陳述式內,除非它位於巢狀 FOR 陳述式或巢狀複合陳述式中。 如果 GOTO 陳述式定義在複合陳述式中,除非它位於巢狀 FOR 陳述式或巢狀複合陳述式中,否則標籤必須定義在相同複合陳述式的側邊。 如果 GOTO 陳述式定義在處理程式中,則標籤必須定義在相同的處理程式中,並遵循其他範圍規則。 如果 GOTO 陳述式定義在處理程式之外,則標籤不得定義在處理程式內。 如果標籤未定義在 GOTO 陳述式可以達到的範圍內,則會傳回錯誤 (SQLSTATE 42736)。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3